Search augmented menu and configuration for computer applications

ABSTRACT

Providing for search to facilitate discovery or access to configuration functions of a computer application is described herein. By way of example, metadata can be appended to configuration functions of the computer application. A matrix correlating subsets of metadata with related configuration functions can facilitate distinguishing respective configuration functions, or groups of related configuration functions based on the subsets of metadata. User search data can be referenced against the subsets of metadata. Respective subsets of metadata that satisfy a condition defined by a data matching function can be returned as a match, and configuration functions associated with matching metadata can be output in response to the search data. In some aspects, user-appended metadata is provided for user customization of configuration function searching, and in other aspects machine learning can be employed to derive user preferences from usage activity and search history, and tailor search results to predicted user preferences.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 13/297,235, filed Nov. 15, 2011, the entirety of which isincorporated by reference herein.

TECHNICAL FIELD

The present application is related to usability features for menu andconfiguration functions of a computer application, and more particularlyto search augmented menu and configuration functions for computerapplications.

BACKGROUND

Software applications have a variety of mechanisms for providing andenhancing user experience of an application. Some applications areconfigured to enable a user to alter borders, shading and other visualaspects of an application's display. Some applications are configured toenable a user to alter sounds, music, ringtones and other auditoryfeatures of the application, and so on. Still other applications mayprovide options for changing a tactile interface in which a user mayreceive output information or provide input information to a computerand computer application (e.g., a touchpad screen). Generally speaking,user interface customization can be as rich and diverse as the varietyof ways in which information can be received from or output to a user ofa computer application.

As applications become more complex, the number of functions andfunctionality of a computer application can increase significantly.Take, for instance, a word processing application. Such an applicationwill likely have functionality to facilitate generation of letters,postcards, documents, presentations, banners, signs, and so on. Theapplication may contain different sets of default parameters for each ofthese different types of documents. Such parameters might includedimensions of document boundaries, dimensions of borders and margins,visual artwork, preconfigured text fields, and so on. In addition, manyof these parameters could be user customizable, in which case theapplication will include a control interface for receiving userparameter values (e.g., a control dialogue box for borders and margins,etc.). In general, different application functionality and features haveassociated user options or preference settings for user customization ofparameters associated with the functionality and features. These useroptions and preference settings are also referred to as configurationfunctions.

Some methods employed for organizing configuration functions of acomputer application include creating menus, ribbons, dialogue boxes,toolbars, and the like, that organize configuration functions intovarious categories. For example, a set of menus might include a filemenu, editing menu and viewing menu, among others, in whichconfiguration functions related to those categories can be accessed.Other applications can organize related configuration functions intoolbars, or in pop-up boxes, whereas some applications employ acombination of these or like mechanisms for organizing configurationfunctions. Thus, some applications may configure some configurationsfunctions in multiple ways. For instance, functionality accessible on anediting menu may also be available on an editing toolbar, and so on.

Although menus, toolbars and dialogue boxes provide a sophisticated wayto organize configuration functions in a computer application, the sheernumber of such functions can still overwhelm users, particularly thoseusers who are unfamiliar with an application, or are familiar with aprior version of the application having a different organization. Oneproblem in software development, for instance, is providing newapplication functionality and solving user concerns in a manner that isappealing to a wide base of users, with an interface that is easy tonavigate. One deterrent in moving to a new version of a computerapplication is fear of losing productivity from lack of familiarity withthe user interface. A challenge for software development in providingcomputer applications is to include new functionality, fix inoperable orineffective functionality, while providing a pleasing user experience,without impacting productivity of users.

SUMMARY

A simplified summary is provided herein to help enable a basic orgeneral understanding of various aspects of exemplary, non-limitingembodiments that follow in the more detailed description and theaccompanying drawings. This summary is not intended, however, as anextensive or exhaustive overview. Instead, the sole purpose of thissummary is to present some concepts related to some exemplarynon-limiting embodiments in a simplified form as a prelude to the moredetailed description of the various embodiments that follow.

In particular aspects, disclosed is a system, comprising a referencecomponent configured to access a set of metadata correlated withconfiguration functions of a computer application, an indexing componentconfigured to distinguish respective subsets of the set of metadata thatare associated with respective ones of the configuration functions; anda searching component that receives a set of search data, compares theset of search data with the subsets of the set of metadata, andidentifies a matching subset of metadata that satisfies a conditionpertaining to the search data defined by a function.

In other aspects, a method of providing access to configurationfunctions of an application is disclosed, the method comprisingassigning respective sets of metadata to respective configurationfunctions of the application that are descriptive of respective names,uses or applications of the respective configuration functions; indexingthe configuration functions and the assigned respective sets ofmetadata, receiving a configuration function search query; referencingthe search query with respective sets of metadata and identifying one ormore respective sets of metadata that satisfy a condition defined by adata matching function relative to the search query, and returning oneor more configuration functions assigned to respective sets of metadatasatisfying the condition.

In further aspects, the subject disclosure provides a computer-readablemedium comprising instructions that, when executed by a processor,facilitate user access to configuration functions of an application; theinstructions comprising assigning distinguishing metadata to respectiveconfiguration functions of an application, indexing the configurationfunctions and the distinguishing metadata, receiving a search querypertaining to configuration functions of the application, searching thedistinguishing metadata to identify a subset of the distinguishingmetadata correlated with the search query sufficient to satisfy acondition defined by a correlation function, and returning aconfiguration function associated with the subset of the distinguishingmetadata in response to the search query.

According to various aspects of the subject disclosure, provided hereinis user-enabled search coupled with accessing configuration functions ofa computer application. In a particular aspect, metadata can be appendedto configuration functions of the computer application. Respective setsof metadata can then be used to distinguish respective configurationfunctions, or groups of related configuration functions. A user canenter search data, which can be reference against the sets of metadata.Respective sets of metadata that satisfy a condition defined by a datamatching function can be returned as a match, and configurationfunctions associated with matching metadata can be output in response tothe search data.

In some non-limiting aspects of the subject disclosure, audio, visual ormultimedia content can be provided in conjunction with search forconfiguration functions. The content can be configured to instruct auser how to access a configuration function through the user interface.Further, the content can be triggered upon selection of a particularconfiguration function among a list of configurations functions that areoutput in response to a search. Thus, by searching for and selecting aconfiguration function, a user indicates unfamiliarity with accessingthe configuration function through the user interface. Theaudio/visual/multimedia content can supplement a user's mastery of theuser interface of the computer application.

In still other aspects of the subject disclosure, configuration functionsearch results can be returned as a list of links. Selection of a linkcan call the configuration function selected, thereby opening a dialoguebox, drop-down menu, activating a toolbar function, etc., giving a useraccess to the configuration function. Thus, the search can facilitaterapid access to the desired configuration function, enhancing userproductivity within the computer application.

In one or more additional aspects, metadata appended to applicationconfiguration functions can be customized based on user activity, oruser preferences. In one such aspect, a user can provide user-metadatato be appended to a particular configuration function, therebypotentially modifying the likelihood of returning the configurationfunction in response to entry of search data related to theuser-metadata. In another aspect, user activity within the computerapplication can be monitored and analyzed to generate additionalmetadata related to a particular user's use of the computer application.This metadata can be descriptive of how the user interacts with variousaspects of the user interface, what options or preferences the userselects, or the like. This metadata can be appended to suitableconfiguration functions to enhance future search results based on theuser activity. In at least one additional aspect, machine learning canbe employed to derive the metadata or to conduct a search, providing asophisticated set of algorithms to adapt computer applicationconfiguration functionality to a particular user of the computerapplication.

Other embodiments and various non-limiting examples, scenarios andimplementations are described in more detail below.

BRIEF DESCRIPTION OF THE DRAWINGS

Various non-limiting embodiments are further described with reference tothe accompanying drawings in which:

FIG. 1 illustrates a block diagram of an example system that providessearch for configuration functions of an application according toaspects disclosed herein;

FIG. 2 depicts a block diagram of a sample system that providesmultimedia output and interactive instruction for configurationfunctions;

FIG. 3 illustrates a block diagram of an example system that providesmulti-application support for configuration function searching accordingto some aspects;

FIG. 4 depicts a block diagram of example implementations ofconfiguration function searching according to further aspects;

FIG. 5 illustrates a block diagram of an example system that providesuser customization and machine learning for configuration functionsearching;

FIG. 6 illustrates a flowchart of an example method for providing usersearching for computer application configuration functions according toother aspects;

FIG. 7 illustrates a flowchart of a sample method for receiving usersearch data and identifying and returning related configurationfunctions in some aspects;

FIG. 8 depicts a flowchart of an example method for providing usercustomizable searching related to configuration functions according tofurther aspects;

FIG. 9 depicts a flowchart of a sample method for providing searchingadapted to a particular user's use of a computer application;

FIG. 10 depicts a block diagram of example non-limiting networkedenvironments in which various aspects herein can be implemented; and

FIG. 11 illustrates a block diagram representing exemplary non-limitingcomputing system in which one or more aspects can be implemented.

DETAILED DESCRIPTION Overview

As mentioned briefly in the background section, organization ofconfiguration functionality of a computer application can be a difficulttask for software development engineers. Particularly, conflicting goalsfor a wide range of application users must be satisfied to achieve anacceptable application for a large market. Thus, for instance, a userinterface should be aesthetically pleasing, as well as productive,enabling a user to rapidly access functionality that assists inperforming tasks within the application. Moreover, user customizablesettings, including user options, user preferences, and the like, inwhich users can input parameters to control operation, appearance orexecution of application features, should be easily accessible withoutcluttering a user interface. These user customizable settings arereferred to herein as configuration functions.

Successful computer applications often include diverse functionalitycoupled with a high degree of user configuration, while minimizingdisplay clutter associated with the functionality and configurationfunctions. To minimize display clutter, user interface controls (e.g.,dialogue boxes) related to functionality and configuration functions areoften hidden in the display until accessed through the user interface.The access mechanisms can in turn be hidden behind drop-down menus,hideable/movable toolbars, or shortcut keys/key combinations, or thelike. Familiarity with the access mechanisms can provide rapid accessand implementation of powerful application functionality; sometimesassociated with the vernacular title “power user”. A typical power useris often loathe to switch to other applications with which they are lessfamiliar, or even new versions of the same application, for fear oflosing the high degree of productivity that user has established in anexisting version of an application. Accordingly, reducing learning timewhile maximizing functionality and aesthetic appearance are commonchallenges in software application development.

To address these and related problems, the subject disclosure providesfor searching in conjunction with accessing configuration functions of acomputer application. Metadata can be appended to configurationfunctions to facilitate this searching. The application can include asearch field for entering search data for configuration functions.Search data entered within the search field can be analyzed with regardto metadata appended to the configuration functions, and subsets ofmetadata determined to be related to the search data identified. One ormore configuration functions associated with this identified metadatacan be returned in response to the search. In some disclosed aspects,the search can return a list of links that provide access to a selectedconfiguration function in response to such a selection. In otheraspects, selection of a configuration function can initiate tutorialcontent instructing a user how to access the configuration functionthrough a user interface of the computer application. According to oneor more additional aspects, configuration function searching can becustomized to a user or a user's use of an application, by incorporatinguser-related metadata with the configuration functions. In at least oneaspect, searching can be enhanced with machine learning to provide arobust and sophisticated analysis of user preferences and usage tooptimize searching and search results related to configuration functionsof the computer application.

Referring now to the drawings, FIG. 1 illustrates a block diagram of anexample system 100 configured to provide keyword-based search inconjunction with identifying or accessing configuration functions of acomputer application, according to one or more aspects of the subjectdisclosure. Keyword-based search can comprise various search algorithmsthat receive data, compare the received data to a set of stored data,and derive similarities between subsets of the set of stored data andthe received data, from which search results are compiled and output inresponse. Various mechanisms for searching are included within themeaning of the term “search”, including network or web search engines(e.g., an Internet search engine, such as the bing® search engineprovided by Microsoft Corporation, and others), application-based searchengines (e.g., a search utility contained within a particularapplication), or the like, which can be adapted to provide searchingfunctionality as described herein.

As depicted, system 100 can comprise a configuration searching system102 communicatively connected with a database 112 for storing data.Configuration searching system 102 can comprise a user interfacecomponent 104 configured to receive user input information, andconfigured to output user information to output media (e.g., a graphicaldisplay, audio speakers, tactile interface, and so on). Particularly,user interface component 104 can be configured to obtain user input 106comprising search data. The user input can comprise text data (e.g.,entered into a text field related to configuration function searching,e.g., see FIG. 4, infra), voice data converted to text data (e.g., inresponse to processing by a voice to text application), user interfaceselections (e.g., selected by keyboard entry, mouse selection, touchpador touch screen selection), or other suitable user input mechanism.

User input 106 is received at user interface component 104. Wheresuitable, user interface component 104 can be configured to rendersearch data contained in user input 106 into a different data form. Forinstance, text data in a particular language can be converted to ASCIIdata, machine code, or some other suitable data format, to facilitateanalysis and processing of search data.

Configuration searching system 104 can further comprise a search engine108 configured to utilize the search data received from user input 104to identify one or more configuration functions of a computerapplication, related to the search data. To facilitate the search andidentification, search engine 108 can comprise a reference component 110configured to access a set of metadata stored in a metadata file 114 ofdatabase. The set of metadata stored in metadata file 114 can beappended by database 112 to configuration functions of the computerapplication stored in a configuration function file 116. For instance,subsets of metadata can be correlated with individual configurationfunctions, or groups of configuration functions, based on categories,names, descriptions, usage, contexts of usage, or the like, or suitablecombinations thereof, of those configuration functions or groups ofconfiguration functions. According to this relationship between metadataand configuration functions, an indexing component 118 can be configuredto distinguish respective subsets of the set of metadata that areassociated with respective ones of the configuration functions, orrespective groups of the configuration functions. This can be achievedby exploiting differences in respective subsets of metadata stored inmetadata file 114 that are correlated with individual configurationfunctions or groups of configuration functions, or combinations thereof.By receiving subsets of stored metadata from reference component 110,indexing component 118 can then access configuration functions fromconfiguration functions file 116, and compile a matrix of configurationfunctions and metadata for a particular computer application. In someaspects of the subject disclosure, indexing component 118 can furthercompile a matrix of configuration functions and metadata, in conjunctionwith user preferences or user usage activity, referenced for a singlecomputer application or for multiple computer applications, or suitablecombinations thereof.

In addition to the foregoing, search engine 108 can comprise a searchingcomponent 120 configured to receive a set of search data from referencecomponent 110 and to compare the set of search data with subsets of theset of metadata compiled by indexing component 118. Moreover, searchingcomponent 120 can be configured to identify a matching subset ofmetadata that satisfies a condition pertaining to the search datadefined by a function. For instance, the condition can comprisesatisfying a set of relevancy criteria established by the function,although other suitable conditions related to searching with respect toa set of search data can be utilized in addition or instead. Searchingcomponent 120 can then be configured to identify one or moreconfiguration functions correlated with the subsets of metadata thatsatisfy the condition. These one or more configuration functions can bereturned in response to the search.

In at least one aspect of the subject disclosure, search engine 108 canbe configured to search at least in part based on a user initiating aconfiguration function search. For instance, an end user can enteringsearch data can receive one set of configuration function results basedon an end user classification, whereas an application developer canenter the search data and receive a second set of configuration functionresults based on a developer classification, or the like. Such a resultcan be achieved, for instance, when the set of metadata stored inmetadata file 114 is categorized for different classifications ofcomputer application users (e.g., including an end-user category and adeveloper category). In such case, searching component 120 can beconfigured to receive a category of user in conjunction with the set ofsearch data and excludes from the comparison metadata inconsistent withthe category of user. As an alternative, searching component can modifythe condition defined by the function according to the category of user,causing the first set of metadata to satisfy the condition for the enduser but not the developer, and causing the second set of metadata tosatisfy the condition for the developer but not the end user, and so on.Other implementations known in the art or made known to one of skill inthe art by way of the context provided herein are considered within thescope of the subject disclosure.

FIG. 2 illustrates a block diagram of an example system 200 configuredto provide search functionality in conjunction with computer applicationconfiguration functions, according to additional aspects of the subjectdisclosure. Particularly, system 200 can be configured to output searchresults in response to a configuration function search. The searchresults can be further configured to facilitate selection and access toa configuration function returned in response to the search. In at leastone aspect, system 200 can facilitate instructing a user in accessingone or more configuration search functions through a user interface ofan associated computer application, to improve user knowledge andmastery of the computer application.

System 200 can comprise a configuration searching system 202 that canperform a search of configuration functions and return one or moreconfiguration functions in response to the search. A user interfacecomponent 204 can be configured to obtain search data from user dataentry, which can be provided to a search engine 206. Search engine 206can be substantially similar to search engine 108 of FIG. 1 according tosome aspects of the subject disclosure; in other aspects, search engine206 can include some, all or none of the features of search engine 108.According to various aspects, search engine 206 can employ the searchdata to retrieve one or more configuration functions related to thesearch data. The configuration functions can be provided as a searchresult to an output component 208.

Output component 208 can be configured to return the one or moreconfiguration functions correlated with matching subsets of metadataidentified by search engine 206, to user interface component 204 and anoutput media device of a computing device associated with configurationsearching system 202 (e.g., see FIG. 10, infra). As an example, theconfiguration functions can be included within an application contentmessage 212 comprising visual content 214 sent to a display device 216,or audio content 218 sent to an audio device 220 (e.g., speakers), orother media content sent to another media device (e.g., tactileinformation sent to a tactile user interface device). Additionally, inat least some aspects of the subject disclosure output component 208 canbe further configured to return one or more executable linksrepresenting the one or more configuration functions in response to thesearch data. The executable link can be configured, for instance, toinitialize the configuration function within the computer application inresponse to a selection of the executable link.

According to one or more alternative or additional aspects of thesubject disclosure, configuration searching system 202 can comprise atutorial component 210. Tutorial component 210 can be configured toexecute audio, video, image or multimedia content that is configured todescribe utilization of a configuration function associated with one ormore configuration functions. Particularly, the content can describe howto access the configuration function(s) through a user interface of thecomputer application. In one instance, the content can be preceded by auser interface query requesting whether a user would like the content tobe played, and execution of the content can be conditioned on acceptanceby a user in response to the user interface query. In other instances,execution of the content can be set in a user preference (e.g., aconfiguration function) of the computer application. Examples of suchcontent can include a video displaying movement of a mouse pointer tomenus or toolbars on which a configuration function can be accessed, aset of pictures depicting accessing the configuration function in a userinterface of the computer application, or the like.

FIG. 3 illustrates a block diagram of an example system 300 thatprovides searching for configuration functions across multiple computerapplications according to further aspects of the subject disclosure.Additionally, system 300 can be configured to identify similarconfiguration functions among multiple applications and output one ormore configuration functions of a first application based on search datarelated to a second application. System 300 therefore can facilitateuser facility and acumen in the second application based at least inpart on experience and knowledge of the first application.

System 300 can comprise a configuration searching system 302communicatively connected with a multi-application configurationdatabase 304. Configuration searching system 302 can comprise a userinterface component 306 configured to receive user search data within, apertaining to, a first application, and provide the search data to asearch engine 308. Search engine 308 can employ a compatibilitycomponent 310 configured to access multi-application configurationdatabase 304 in response to search engine 308 receiving the set ofsearch data, and return to the search engine 308 a configurationfunction at least of a second computer application having metadatarelated to the set of search data.

To facilitate cross-application configuration searching,multi-application configuration database 304 can comprise metadataappended to configuration functions of multiple computer applicationsand store the metadata in a multi-application metadata file 312(application_(1-x) metadata, where x is a suitable integer greater than1). Configuration functions for the multiple applications can be storedin an application configuration functions file 314. Additionally,multi-application configuration database 304 can also storeconfiguration functions common to multiple applications, or similar orrelated configuration functions for the multiple applications as definedby a metadata similarity function, in a cross-application configurationfunction file 316. By storing relationships between metadata andconfiguration functions across the multiple applications,multi-application configuration database 304 can further be configuredto cross-correlate configuration functions of the multiple computerapplications having respective subsets of metadata that satisfy acondition defined by the similarity function. Thus, by referencingsearch data with the multi-application metadata stored inmulti-application metadata file 312, configuration functions of multipleapplications stored by multi-application configuration database 304 canbe returned in response to a search, and provided to search engine 308and user interface component 306 to return to a user in response to thesearch.

FIG. 4 illustrates example user interface implementations ofconfiguration function searching according to aspects disclosed herein.A fixed search implementation 400A is depicted at the top of FIG. 4.Fixed search implementation 400A comprises a display window 402A.Display window 402A can be a view window for a computer application inone aspect of the subject disclosure, whereas in other aspects, displaywindow 402A can be a window spawned within the computer application, orcan be spawned outside of the computer application by an operatingsystem of a computer. As depicted, display window 402A can include afixed search field 404A. Fixed search field 404A can be located adjacentto a menu bar, as depicted, or can be in another fixed location withindisplay window 402A. Other locations can include a border (not depicted)at the bottom of display window 402A, or a border on a side of displaywindow 402A. Fixed search field 404A can further comprise an input field406A into which text can be entered by a user. Text entered into inputfield 406A can be employed, for instance, as keywords for searchingconfiguration functions of a computer application(s), as describedherein. Upon conducting the search, configuration function resultsmatching the search are returned in a results window 408A. Resultswindow 408A can be implemented as a drop-down window incorporatingscrolling or other navigational techniques for viewing a subset of theconfiguration function results. In at least one aspect, configurationfunction results can comprise links, where the links are configured toexecute a configuration function associated with a selected link.

At the bottom of FIG. 4 is depicted a movable search implementation400B. Movable search implementation 400B comprises a display window402B, which can be substantially similar to display window 402A,described above. Within display window 402B is a movable search field404B. Movable search field 404B can be positioned throughout displaywindow 402B. Repositioning can be accomplished by clicking and draggingmovable search field 404B via a mouse input device, by specifyingvertical and horizontal position within display window 402B, or thelike. Movable search field 404B can be hidden or exposed, in someaspects of the subject disclosure, with a keyboard entry, mouse input,menu selection, toolbar selection, or a suitable combination thereof.When exposed, user text can be entered into an input field 406B, in asimilar manner as described above with regard to input field 406A.Configuration function search results can be output in a results window408B, which can include links configured to execute a configurationfunction in some aspects.

FIG. 5 illustrates a block diagram of an example system 500 configuredto provide user customization of configuration function searchcapabilities of a computer application. Additionally, system 500 canincorporate machine learning functionality to provide search resultstailored to preferences or usage history of a particular user. Thus,system 500 can facilitate configuration function search configured toadapt to a user's needs and preferences, providing a more robust userexperience.

System 500 can comprise a configuration searching system 502communicatively connected to a metadata database 508. Keywords, text orother search data can be received utilizing a user interface component504 associated with a user interface of a processing device, computerdevice, electronic device, etc., pertaining to configuration searchingsystem 502. The keywords, text or other search data can be employed asuser search data by a search engine 506, which identifies configurationfunctions of a computer application(s) having associated metadatasatisfying a condition defined by a data matching function. Identifiedconfiguration functions can be returned in response to the search by anoutput component 510 and user interface component 504.

Configuration searching system can further comprise a metadata/searchcustomization component 510 configured to adapt configuration functionsearching to one or more users of an application(s). For instance, auser library component 512 can be employed that is configured to appenda set of metadata stored in metadata database within a metadata file 516with user metadata received in response to a user interface entry. Thisuser metadata can be metadata actively entered by a user, and can bedirected toward one or more configuration functions of one or morecomputer applications stored in a configuration functions file 514. Theuser metadata can be appended to metadata file 516, in one aspect, andrelated to the one or more configuration functions to which the usermetadata is directed by user input. Thus, user library component 512enables a user to input metadata for particular configuration functions.The user metadata and related configuration function association canaffect the results of configuration function searching in a mannerprovided by a computer user, facilitating user-directed customization ofthe configuration function search.

In addition to the foregoing, metadata/search customization component510 can be configured to monitor and analyze user activity relating toone or more computer applications and employ the analysis to makepredictive determinations matching configuration function search resultsto estimated usage or preferences of an application user. User-specificmetadata derived by metadata/search customization component 510 from thepredictive determinations can be appended to selected configurationfunctions and stored in user metadata file 518, and optionallydistinguished from user-supplied user metadata appended by user librarycomponent 512, discussed above. Additionally, a machine learningcomponent 522 can employ one or more of a set of algorithms to make thepredictive determinations, derive the user-specific metadata, or modifyconfiguration function search results consistent with estimated usage orpreferences of the application user.

In order to optimize configuration function search results, machinelearning component 522 can utilize a set of models (e.g., metadatamodels, configuration function model, user usage models, datacorrelation models, user preference models, statistical models based onthe foregoing, etc.) in connection with returning a set of configurationfunctions to user-supplied search data configured for user usage andpreferences. The models can be based on a plurality of information(e.g., metadata stored in metadata file 516, user metadata stored inuser metadata file 518, associations between metadata or user metadataand configuration functions stored in configuration function file 514,stored search results of prior configuration function searches stored insearch history file 526, etc.). Optimization routines associated withmachine learning component 522 can harness a model(s) that is trainedfrom previously collected data, a model(s) that is based on a priormodel(s) that is updated with new data, via model mixture or data mixingmethodology, or a model(s) that is trained with seed data, andthereafter tuned in real-time by training with actual field data basedon parameters modified as a result of error correction instances.

In addition, machine learning component 522 can employ optimization andmachine reasoning techniques in connection with making determinations orinferences regarding optimization decisions, such as correlatinguser-supplied appended metadata and predictive user-related metadatawith application usage history or configuration function searchhistory,—either alone or in conjunction with one or more previousiterations of user input or user usage and user preference analysis, orthe like. For example, machine learning component 522 can employ aprobabilistic-based or statistical-based approach in connection withmatching stored metadata with user search data. Inferences can be basedin part upon explicit training of classifier(s) (not shown), or implicittraining based on a data feedback loop (not depicted), and the like.

Machine learning component 522 can also employ one of numerousmethodologies for learning from data and then drawing inferences fromthe models so constructed (e.g., Hidden Markov Models (HMMs) and relatedprototypical dependency models, more general probabilistic graphicalmodels, such as Bayesian networks, e.g., created by structure searchusing a Bayesian model score or approximation, linear classifiers, suchas support vector machines (SVMs), non-linear classifiers (e.g., methodsreferred to as “neural network” methodologies, fuzzy logicmethodologies, and other approaches that perform data fusion, etc.) inaccordance with implementing various aspects described herein.Methodologies employed by machine learning component 522 can alsoinclude mechanisms for the capture of logical relationships such astheorem provers or heuristic rule-based expert systems. Inferencesderived from such learned or manually constructed models can be employedin other optimization techniques, such as linear and non-linearprogramming, that seek to maximize probabilities of error related tominimizing deviation of expected search results and provided searchresults. For example, maximizing an overall accuracy of expected searchresults and provided search results can be achieved through suchoptimization techniques.

According to a particular aspect of the subject disclosure,metadata/search customization component 510 can be configured as followsto implement the optimization and machine learning techniques describesabove. A user history component 520 can be configured to track userconfiguration function activity relative to user use of one or morecomputer applications and record user configuration function activity atleast as a function of time and of computer application. Additionally,machine learning component 522 can be configured to analyze recordeduser configuration function activity and to employ optimization weightsfor the configuration functions or for a condition and data matchingfunction employed to match user search data to subsets of metadatastored in metadata file 516 or subsets of user metadata stored in usermetadata file 518. Weighting can be a result of one or more data modelsand in response to the analysis and can be a function of time andcomputer application. In a further aspect, metadata/search customizationcomponent 510 can comprise a predictive text component 524 configured toauto-fill a search input field with a proposed search result in responseto text being entered into a search field (e.g., search field 406A or406B of FIG. 4, infra). Predictive text component 524 can be furtherconfigured to update the proposed search result upon textual changes tothe text currently entered. Still further, the proposed search resultcan be returned from data compiled from previous sets of search data, orfrom the currently entered text satisfying a correlation condition withrespect to appended metadata, user-appended metadata or metadata derivedfrom user usage of an application(s), or a suitable combination thereof.In at least one disclosed aspect, predictive text component 524 can beconfigured to return a proposed search result in the form of imagecontent, audio content, video content or multimedia content, wherecontent can be played/displayed or updated as data is entered into thesearch field.

The aforementioned diagrams have been described with respect tointeraction between several systems, apparatuses, components, electroniccircuits, or optoelectronic devices. It should be appreciated that suchdiagrams can include those components or systems specified therein, someof the specified components, or additional components. For example, asystem could include configuration searching system 500 including searchengine 506, reference component 110, indexing component 118 andsearching component 120, in conjunction with multi-applicationconfiguration database 304. Sub-components could also be implemented assub-components connected to other sub-components rather than includedwithin a parent component. Additionally, it should be noted that two ormore components could be combined into a single component providingaggregate functionality. For instance, reference component 202 caninclude indexing component 214 to facilitate accessing stored metadataand stored configuration functions, and relationships there between, anddistinguishing respective configuration functions or groups ofconfiguration functions by related subsets of metadata, by way of asingle component. Components of the disclosed systems and apparatusescan also interact with one or more other components not specificallydescribed herein but known by those of skill in the art, or made knownto one of skill in the art by way of the context provided herein.

In view of the exemplary diagrams described supra, process methods thatmay be implemented in accordance with the disclosed subject matter willbe better appreciated with reference to the flow chart of FIGS. 6-9.While for purposes of simplicity of explanation, the methods are shownand described as a series of blocks, it is to be understood andappreciated that the disclosed subject matter is not limited by theorder of the blocks, as some blocks may occur in different orders and/orconcurrently with other blocks from what is depicted and describedherein. Moreover, not all illustrated blocks may be required toimplement the methods described hereinafter. Additionally, it should befurther appreciated that the methods disclosed hereinafter andthroughout this specification are capable of being stored on an articleof manufacture to facilitate transporting and transferring such methodsto an electronic device. The term article of manufacture, as used, isintended to encompass a computer program accessible from anycomputer-readable device, device in conjunction with a carrier, orstorage medium.

FIG. 6 depicts a flowchart of a sample method 600 for providing searchcapabilities in conjunction with discovering and accessing configurationfunctions of a computer application, according to additional aspects ofthe subject disclosure. At 602, method 600 can comprise assigningrespective sets of metadata to respective configuration functions of thecomputer application that are descriptive of respective names, uses orapplications of the respective configuration functions. Moreover, at604, method 600 can comprise indexing the configuration functions andthe assigned respective sets of metadata. Indexing can comprise, forinstance, generating a matrix of metadata and related configurationfunctions, optionally including qualitative or quantitative degree ofrelatedness. At 606, method 600 can comprise receiving a configurationfunction search query. The configuration function search query cancomprise data entered into a user interface in conjunction withconfiguration function search functionality. At 608, method 800 cancomprise referencing the search query with respective sets of metadataand identifying one or more respective sets of metadata that satisfy acondition defined by a data matching function relative to the searchquery. At 610, method 600 can comprise returning one or moreconfiguration functions assigned to respective sets of metadatasatisfying the condition.

FIG. 7 illustrates a block diagram of an example method 700 according toparticular aspects of the subject disclosure. At 702, method 700 cancomprise listing configuration functions of a computer application. At704, method 700 can comprise assigning respective sets of metadata tothe respective functions. Metadata can be default metadata, utilizingfunction name data, function description data, function usage data,related help file data pertaining to the function, user-supplied data,or data derived from user usage of the computer application, or thelike, or a suitable combination thereof. At 706, method 700 can compriseindexing sets of metadata and configuration functions for searching. At708, method 700 can comprise receiving a search query for aconfiguration function. At 710, method 700 can comprise comparing setsof metadata to data included within the search query. At 712, method 700can comprise identifying subsets of the metadata that satisfy acondition defined by a data matching function. At 714, method 700 cancomprise retrieving configuration functions for respective subsets ofthe metadata satisfying the condition. At 716, method 700 can comprisereturning a list of the retrieved configuration functions in response toreceiving the search query. At 718, method 700 can comprise receiving aselection for a configuration function in the list. At 720, method 700can comprise executing content associated with accessing the selectedconfiguration function.

FIG. 8 depicts a flowchart of an example method 800 according to one ormore additional aspects of the subject disclosure. Particularly, method800 can provide user customization for configuration function searchcapabilities. At 802, method 800 can comprise compiling a list ofconfiguration functions of a set of computer applications. At 804,method 800 can comprise assigning respective sets of metadata torespective configuration functions. In at least one aspect, therespective sets of metadata can be assigned at least in part based onsimilarity of functions among respective computer applications of theset of computer applications. At 806, method 800 can comprise indexingsets of metadata and configuration functions for searching within ametadata matrix. At 808, method 800 can comprise receiving user-relateddata for one or more configuration functions. At 810, method 800 cancomprise appending assigned metadata with user-related metadata. In atleast one disclosed aspect, the user-related metadata can be supplieddirectly by a user of a computer application(s). In other aspects, theuser-related metadata can be derived from user application activity,prior configuration function search data or search results, or asuitable combination thereof.

To provide metadata derived from user usage, at 812, method 800 cancomprise monitoring user activity related to configuration functions ofthe set of computer applications. At 814, method 800 can compriseidentifying user patterns affecting use of configuration functions. At816, method 800 can comprise deriving additional metadata from userusage patterns. At 818, method 800 can comprise appending additionalmetadata to related configuration functions. In at least one aspect, theuser-related metadata can be appended per user, and stored and searchedseparately in conjunction with a user identifier, user login, userstatus, user type (e.g., end-user, developer, etc.), or the like.

FIG. 9 illustrates a flowchart of a sample method 900 for providingintelligent predictive algorithms for configuration function searchcapabilities according to still other aspects of the subject disclosure.At 902, method 900 can comprise tracking user configuration functionactivity related to use of a computer application. At 904, method 900can comprise recording user configuration function activity at least asa function of time and computer application. At 906, method 900 cancomprise analyzing recorded activity and weighting configurationfunctions according to user identity and user activity. At 908, method900 can comprise modifying a search condition or a data matchingfunction at least in part from the weighted configuration functions toaffect outcome of configuration function search results based on theanalysis of recorded user activity.

EXEMPLARY NETWORKED AND DISTRIBUTED ENVIRONMENTS

One of ordinary skill in the art can appreciate that the variousembodiments for search augmented menu and configuration functionsdescribed herein can be implemented in connection with any computer orother client or server device, which can be deployed as part of acomputer network or in a distributed computing environment, and can beconnected to any kind of data store. In this regard, the variousembodiments described herein can be implemented in any computer systemor environment having any number of memory or storage units, and anynumber of applications and processes occurring across any number ofstorage units. This includes, but is not limited to, an environment withserver computers and client computers deployed in a network environmentor a distributed computing environment, having remote or local storage.

Distributed computing provides sharing of computer resources andservices by communicative exchange among computing devices and systems.These resources and services include the exchange of information, cachestorage and disk storage for objects, such as files. These resources andservices also include the sharing of processing power across multipleprocessing units for load balancing, expansion of resources,specialization of processing, and the like. Distributed computing takesadvantage of network connectivity, allowing clients to leverage theircollective power to benefit the entire enterprise. In this regard, avariety of devices may have applications, objects or resources that mayparticipate in the mechanisms for search augmented menu andconfiguration functions as described for various embodiments of thesubject disclosure.

FIG. 10 provides a schematic diagram of an exemplary networked ordistributed computing environment. The distributed computing environmentcomprises computing objects 1010, 1012, etc. and computing objects ordevices 1020, 1022, 1024, 1026, 1028, etc., which may include programs,methods, data stores, programmable logic, etc., as represented byapplications 1030, 1032, 1034, 1036, 1038 and data store(s) 1040. It canbe appreciated that computing objects 1010, 1012, etc. and computingobjects or devices 1020, 1022, 1024, 1026, 1028, etc. may comprisedifferent devices, such as personal digital assistants (PDAs),audio/video devices, mobile phones, MP3 players, personal computers,laptops, etc.

Each computing object 1010, 1012, etc. and computing objects or devices1020, 1022, 1024, 1026, 1028, etc. can communicate with one or moreother computing objects 1010, 1012, etc. and computing objects ordevices 1020, 1022, 1024, 1026, 1028, etc. by way of the communicationsnetwork 1042, either directly or indirectly. Even though illustrated asa single element in FIG. 10, communications network 1042 may compriseother computing objects and computing devices that provide services tothe system of FIG. 10, and/or may represent multiple interconnectednetworks, which are not shown. Each computing object 1010, 1012, etc. orcomputing object or devices 1020, 1022, 1024, 1026, 1028, etc. can alsocontain an application, such as applications 1030, 1032, 1034, 1036,1038, that might make use of an API, or other object, software, firmwareand/or hardware, suitable for communication with or implementation ofthe techniques for search augmented menu and configuration functionsprovided in accordance with various embodiments of the subjectdisclosure.

There are a variety of systems, components, and network configurationsthat support distributed computing environments. For example, computingsystems can be connected together by wired or wireless systems, by localnetworks or widely distributed networks. Currently, many networks arecoupled to the Internet, which provides an infrastructure for widelydistributed computing and encompasses many different networks, thoughany network infrastructure can be used for exemplary communications madeincident to the systems for search augmented menu and configurationfunctions as described in various embodiments.

Thus, a host of network topologies and network infrastructures, such asclient/server, peer-to-peer, or hybrid architectures, can be utilized.The “client” is a member of a class or group that uses the services ofanother class or group to which it is not related. A client can be aprocess, i.e., roughly a set of instructions or tasks, that requests aservice provided by another program or process. The client processutilizes the requested service without having to “know” any workingdetails about the other program or the service itself.

In a client/server architecture, particularly a networked system, aclient is usually a computer that accesses shared network resourcesprovided by another computer, e.g., a server. In the illustration ofFIG. 10, as a non-limiting example, computing objects or devices 1020,1022, 1024, 1026, 1028, etc. can be thought of as clients and computingobjects 1010, 1012, etc. can be thought of as servers where computingobjects 1010, 1012, etc., acting as servers provide data services, suchas receiving data from client computing objects or devices 1020, 1022,1024, 1026, 1028, etc., storing of data, processing of data,transmitting data to client computing objects or devices 1020, 1022,1024, 1026, 1028, etc., although any computer can be considered aclient, a server, or both, depending on the circumstances.

A server is typically a remote computer system accessible over a remoteor local network, such as the Internet or wireless networkinfrastructures. The client process may be active in a first computersystem, and the server process may be active in a second computersystem, communicating with one another over a communications medium,thus providing distributed functionality and allowing multiple clientsto take advantage of the information-gathering capabilities of theserver. Any software objects utilized pursuant to the techniquesdescribed herein can be provided standalone, or distributed acrossmultiple computing devices or objects.

In a network environment in which the communications network 1042 or busis the Internet, for example, the computing objects 1010, 1012, etc. canbe Web servers with which other computing objects or devices 1020, 1022,1024, 1026, 1028, etc. communicate via any of a number of knownprotocols, such as the hypertext transfer protocol (HTTP). Computingobjects 1010, 1012, etc. acting as servers may also serve as clients,e.g., computing objects or devices 1020, 1022, 1024, 1026, 1028, etc.,as may be characteristic of a distributed computing environment.

EXEMPLARY COMPUTING DEVICE

As mentioned, advantageously, the techniques described herein can beapplied to any device where it is desirable to search augmented menu andconfiguration functions, in a computing system. It can be understood,therefore, that handheld, portable and other computing devices andcomputing objects of all kinds are contemplated for use in connectionwith the various embodiments, i.e., anywhere that resource usage of adevice may be desirably optimized. Accordingly, the below generalpurpose remote computer described below in FIG. 11 is but one example ofa computing device.

Although not required, embodiments can partly be implemented via anoperating system, for use by a developer of services for a device orobject, and/or included within application software that operates toperform one or more functional aspects of the various embodimentsdescribed herein. Software may be described in the general context ofcomputer-executable instructions, such as program modules, beingexecuted by one or more computers, such as client workstations, serversor other devices. Those skilled in the art will appreciate that computersystems have a variety of configurations and protocols that can be usedto communicate data, and thus, no particular configuration or protocolshould be considered limiting.

FIG. 11 thus illustrates an example of a suitable computing systemenvironment 1100 in which one or aspects of the embodiments describedherein can be implemented, although as made clear above, the computingsystem environment 1100 is only one example of a suitable computingenvironment and is not intended to suggest any limitation as to scope ofuse or functionality. Neither should the computing system environment1100 be interpreted as having any dependency or requirement relating toany one or combination of components illustrated in the exemplarycomputing system environment 1100.

As mentioned above, while exemplary embodiments have been described inconnection with various computing devices and network architectures, theunderlying concepts may be applied to any network system and anycomputing device or system.

In addition, there are multiple ways to implement the same or similarfunctionality, e.g., an appropriate API, tool kit, driver code,operating system, control, standalone or downloadable software object,etc. which enables applications and services to take advantage of thetechniques provided herein. Thus, embodiments herein are contemplatedfrom the standpoint of an API (or other software object), as well asfrom a software or hardware object that implements one or moreembodiments as described herein. Thus, various embodiments describedherein can have aspects that are wholly in hardware, partly in hardwareand partly in software, as well as in software.

The word “exemplary” is used herein to mean serving as an example,instance, or illustration. For the avoidance of doubt, the subjectmatter disclosed herein is not limited by such examples. In addition,any aspect or design described herein as “exemplary” is not necessarilyto be construed as preferred or advantageous over other aspects ordesigns, nor is it meant to preclude equivalent exemplary structures andtechniques known to those of ordinary skill in the art. Furthermore, tothe extent that the terms “includes,” “has,” “contains,” and othersimilar words are used, for the avoidance of doubt, such terms areintended to be inclusive in a manner similar to the term “comprising” asan open transition word without precluding any additional or otherelements.

As mentioned, the various techniques described herein may be implementedin connection with hardware or software or, where appropriate, with acombination of both. As used herein, the terms “component,” “system” andthe like are likewise intended to refer to a computer-related entity,either hardware, a combination of hardware and software, software, orsoftware in execution. For example, a component may be, but is notlimited to being, a process running on a processor, a processor, anobject, an executable, a thread of execution, a program, and/or acomputer. By way of illustration, both an application running oncomputer and the computer can be a component. One or more components mayreside within a process and/or thread of execution and a component maybe localized on one computer and/or distributed between two or morecomputers.

In addition to the various embodiments described herein, it is to beunderstood that other similar embodiments can be used or modificationsand additions can be made to the described embodiment(s) for performingthe same or equivalent function of the corresponding embodiment(s)without deviating there from. Still further, multiple processing chipsor multiple devices can share the performance of one or more functionsdescribed herein, and similarly, storage can be effected across aplurality of devices. Accordingly, the various embodiments should not belimited to any single embodiment, but rather should be construed inbreadth, spirit and scope in accordance with the appended claims.

What is claimed is:
 1. A system, comprising: a reference componentconfigured to access a set of metadata correlated with configurationfunctions of a computer application; an indexing component configured todistinguish respective subsets of the set of metadata that areassociated with respective ones of the configuration functions; and asearching component configured to receive a set of search data, comparethe set of search data with the subsets of the set of metadata, andidentify a matching subset of metadata that satisfies a conditionpertaining to the search data defined by a function.
 2. The system ofclaim 1, further comprising an output component configured to return fordisplay by the computer application a configuration function correlatedwith the matching subset of metadata in response to receiving the set ofsearch data.
 3. The system of claim 2, wherein the output component isfurther configured to return an executable link configured to initializethe configuration function within the computer application in responseto a selection of the executable link.
 4. The system of claim 1, whereinthe searching component further comprises a search field displayed bythe computer application and configured to receive entry of the searchdata.
 5. The system of claim 4, wherein the search field is configuredto be displayed within a toolbar menu of the computer application, or isconfigured to be displayed as a pop-up search window in response to akeyboard entry.
 6. The system of claim 1, further comprising amulti-application configuration database configured to storeconfiguration functions and related metadata for the computerapplication and for a second computer application.
 7. The system ofclaim 6, the multi-application configuration database is furtherconfigured to cross-correlate configuration functions of the computerapplication and configuration functions of the second computerapplication having respective subsets of metadata that satisfy acondition defined by a similarity function.
 8. The system of claim 6,further comprising a compatibility component configured to access themulti-application configuration database in response to the searchingcomponent receiving the set of search data, and return to the searchingcomponent a configuration function of the second computer applicationhaving metadata related to the set of search data.
 9. The system ofclaim 1, further comprising a tutorial component configured to executeaudio, video, image or multimedia content that is configured to describeutilization of a configuration function associated with the matchingsubset of metadata.
 10. The system of claim 1, wherein the referencecomponent, the indexing component and the searching component areimplemented as part of a computer, a server, a client, or a web service.11. The system of claim 1, further comprising a user library componentconfigured to append the set of metadata or one or more of therespective subsets of the set of metadata with user metadata received inresponse to a user interface entry.
 12. The system of claim 1, whereinthe set of metadata is categorized for different classifications ofcomputer application users, including an end-user category and adeveloper category, and further wherein the searching component isconfigured to receive a category of user in conjunction with the set ofsearch data and to exclude from the comparison metadata inconsistentwith the category of user.
 13. The system of claim 1, further comprisinga predictive text component configured to return a proposed searchresult in response to text currently entered into the search field, andconfigured to update the proposed search result upon textual changes tothe text currently entered, wherein the proposed search result isreturned from data compiled from previous sets of search data, or fromthe currently entered text satisfying a correlation condition withrespect to user-appended metadata or with respect to the set ofmetadata.
 14. The system of claim 13, wherein the predictive textcomponent returns the proposed search result in the form of imagecontent, audio content, video content or multimedia content.
 15. Thesystem of claim 1, further comprising: a user history componentconfigured to track user configuration function activity relative touser use of the computer application and record user configurationfunction activity at least as a function of time and of computerapplication; and a machine learning component configured to analyzerecorded user configuration function activity and to weight theconfiguration functions in response to the analysis and modify thecondition or the function of time and computer application via theweights.
 16. A method of providing access to configuration functions ofan application, comprising: assigning respective sets of metadata torespective configuration functions of the application that aredescriptive of respective names, uses or applications of the respectiveconfiguration functions; indexing the configuration functions and theassigned respective sets of metadata; receiving a configuration functionsearch query; referencing the search query with respective sets ofmetadata and identifying one or more respective sets of metadata thatsatisfy a condition defined by a data matching function relative to thesearch query; and returning one or more configuration functions assignedto respective sets of metadata satisfying the condition.
 17. The methodof claim 16, further comprising categorizing the respectiveconfiguration functions into a set of user-distinct categories, matchingthe configuration function search query to at least one of the set ofuser-distinct categories, and modifying the condition to include acorrelation with the at least one of the set of user-distinct categoriesdefined by a correlation function.
 18. The method of claim 17, furthercomprising tracking user activity within the application, wherein thematching the configuration function search query to the at least one ofthe set of user-distinct categories comprises correlating the useractivity with the set of user-distinct categories, and identifying auser-distinct category that satisfies a condition defined by an activitymatching function.
 19. The method of claim 16, further comprisingactivating a tutorial function that executes image, video, audio ormultimedia content describing use of a user-selected configurationfunction, or detailing user activation of the user-selectedconfiguration function within a user interface of the application inconjunction with executing the user-select configuration function.
 20. Acomputer-readable medium comprising instructions that, when executed bya computing device, facilitate user access to configuration functions ofan application, the instructions comprising: assigning distinguishingmetadata to respective configuration functions of an application;indexing the configuration functions and the distinguishing metadata;receiving a search query pertaining to configuration functions of theapplication; searching the distinguishing metadata to identify a subsetof the distinguishing metadata correlated with the search querysufficient to satisfy a condition defined by a correlation function; andreturning a configuration function associated with the subset of thedistinguishing metadata in response to the search query.